package com.OtherExercises;

public class FindPrimeNumber {
    public static void main(String[] args) {
        int start = 101, end = 200;
        printPrimeNumber(start, end);

    }
    /*
    101是一个素数!
103是一个素数!
107是一个素数!
109是一个素数!
113是一个素数!
127是一个素数!
131是一个素数!
137是一个素数!
139是一个素数!
149是一个素数!
151是一个素数!
157是一个素数!
163是一个素数!
167是一个素数!
173是一个素数!
179是一个素数!
181是一个素数!
191是一个素数!
193是一个素数!
197是一个素数!
199是一个素数!
从101到200一共有21个素数!
     */

    //判断101-200之间有多少个素数?并打印这些素数!

    /**
     * 输入起始和末尾计算之间有多少个素数,并打印这些素数
     *
     * @param start
     * @param end
     */
    public static void printPrimeNumber(int start, int end) {
        if (start > end) {
            System.out.println("起始小于末尾,无法判断!");
            return;
        }
        int count = 0;
        for (int i = start; i <= end; i++) {
            if (isPrime(i)) {//判素数
                count++;
                System.out.println(i + "是一个素数!");
            }
        }
        System.out.println("从" + start + "到" + end + "一共有" + count + "个素数!");
    }

    /**
     * 输入一个整数,判断是否是素数,是素数返回true,不是素数返回false
     *
     * @param number
     * @return boolean
     */
    private static boolean isPrime(int number) {
        if (number <= 1) {//number不可以<=1
            System.out.println("逻辑错误," + number + "<2,不参与判断!");
            return false;
        }
        for (int i = 2; i <= Math.sqrt(number); i++) {
            if (number % i == 0) {//一旦能被整除,表示不是素数
                return false;
            }
        }//循环结束都没有返回,表示是素数
        return true;
    }

}
